package com.itheima.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author by itheima
 * @Date 2022/4/27
 * @Description 定义配置SpringMvc相关的配置类
 *  继承并重写WebMvcConfigurationSupport下的方法可扩展：1.静态资源加载 2.拦截器 等操作
 */
//@Configuration
@ComponentScan({"com.itheima.controller","com.itheima.advice"})//扫描web层资源，并加入IOC容器
//@EnableWebMvc//注解底层以来与DispatcherServlet，而servlet的启动依赖于servlet容器
@EnableWebMvc//开启springMvc扩展功能的支持，包含：json与javabean的转换、日期格式等转换、自定义转换等等
//@Import(SpringMvcSupports.class)
//public class SpringMvcCofnig extends WebMvcConfigurationSupport {
public class SpringMvcCofnig implements WebMvcConfigurer {

    /**
     * 添加资源处理器，放行静态资源,具体的配置相当于一个处理器方法
     * @param registry 资源注册器对象，通过该对象，可放行具体的静态资源
     */
//    @Override
//    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
//        //http://localhost:8080/css/style.css,通过规则/css/**匹配到style.css路径关键字，然后
//        //去根路径下的css报下找style.css，然后直接响应
//        //**：表示匹配无限的路径
//        registry.addResourceHandler("/css/**").addResourceLocations("/css/");
//        registry.addResourceHandler("/js/**").addResourceLocations("/js/");
//        registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
//        registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
//    }

    /**
     * 添加资源处理器，放行静态资源,具体的配置相当于一个处理器方法
     * @param registry 资源注册器对象，通过该对象，可放行具体的静态资源
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //        //http://localhost:8080/css/style.css,通过规则/css/**匹配到style.css路径关键字，然后
//        //去根路径下的css报下找style.css，然后直接响应
//        //**：表示匹配无限的路径
        registry.addResourceHandler("/css/**").addResourceLocations("/css/");
        registry.addResourceHandler("/js/**").addResourceLocations("/js/");
        registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
        registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
    }
}
